package com.sky.config;

import com.sky.properties.AliOssProperties;
import com.sky.utils.AliOssUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 配置类，用来创建AliOssUtil对象
 */
@Slf4j
@Configuration// 表示当前类是一个配置类
public class OssConfiguration {

    @Bean// 确保容器中存在AliOssProperties对象
    @ConditionalOnMissingBean// 表示当前方法生成的对象，如果容器中已经存在这个对象，则不创建
    public AliOssUtil aliOssUtil(AliOssProperties aliOssProperties) {
        log.info("开始创建阿里云文件上传工具类对象：{}", aliOssProperties);
        return new AliOssUtil(aliOssProperties.getEndpoint(),
                aliOssProperties.getAccessKeyId(),
                aliOssProperties.getAccessKeySecret(),
                aliOssProperties.getBucketName());
    }
    //这里不使用自动注入的原因是因为，如果使用自动注入，那么如果容器中没有AliOssProperties对象，那么就会报错。
    // 因为根据spring的依赖注入顺序，配置类的创建顺序是先创建配置类，再创建其他类。
    // 所以如果使用自动注入，那么如果容器中没有AliOssProperties对象，那么就会报错，因为根据spring的依赖注入顺序，配置类的创建顺序是先创建配置类，再创建其他类，所以如果使用自动注入，那么如果容器中没有AliOssProperties对象，那么就会报错，因为根据spring的依赖注入顺序，配置类的创建顺序是先创建

}
